package cn.klaw.constant;

import cn.klaw.util.StringUtil;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 *
 * @version V3.5.0
 *
 * @date 2021/5/31
 */
public class GenerateConstant {

    /**
     * 作者
     */
    public static final String AUTHOR = "KLAW开发平台组";

    /**
     * 版本
     */
    public static final String VERSION = "V5.0.0";

    /**
     * 版权
     */
    public static final String COPYRIGHT = "北京千律科技有限责任公司";

    /**
     * 描述
     */
    public static final String DESCRIPTION = "";

    /**
     * 文件本地服务器标识
     */
    public static final String LOCAL = "local";
    /**
     * 系统配置信息key
     */
    public static final String SYSCONFIG = "SysConfig";
//文件名前缀
    /**
     * 实体后缀
     */
    public static final String ENTITY = "Entity";

    /**
     * Mapper XML后缀
     */
    public static final String MAPPER_XML = "Mapper";

    /**
     * Mapper后缀
     */
    public static final String MAPPER = "Mapper";

    /**
     * Service后缀
     */
    public static final String SERVICE = "Service";

    /**
     * SERVICEIMPL后缀
     */
    public static final String SERVICEIMPL = "ServiceImpl";

    /**
     * controller后缀
     */
    public static final String CONTROLLER = "Controller";

    /**
     * 包名
     */
    public static final String PACKAGE_NAME = "com/klaw";

    /**
     * 系统关键字
     */
    public static final List<String> SYS_KEYWORD = Arrays.asList("tenantid", "id", "foreignid", "flowid", "flowtaskid", "deleteuserid", "deletetime", "deletemark",
            "version", "tenant_id", "foreign_id", "flow_id", "flow_task_id", "delete_user_id", "delete_time", "delete_mark", "f_tenant_id", "f_id", "f_foreign_id",
            "f_flow_id", "f_flow_task_id", "f_delete_user_id", "f_delete_time", "f_delete_mark", "f_version");
    /**
     * JAVA关键字
     */
    public static final List<String> JAVA_KEYWORD = Arrays.asList("abstract", "boolean", "break", "byte", "catch", "char", "class", "continue", "default", "do", "double",
            "else", "extends", "final", "finally", "float", "for", "if", "implements", "import", "instanceof", "int", "interface", "long", "native", "new", "null",
            "package", "private", "protected", "public", "short", "static", "super", "switch", "synchronized", "this", "throw", "throws", "transient", "try", "void",
            "volatile", "while");
    /**
     * 数据库关键字
     */
    public static final List<String> SQL_KEYWORD = Arrays.asList("abort", "abs", "absent", "absolute", "abstract", "access", "accessed", "accessible", "according", "account", "across", "action", "activate", "ada", "add", "admin", "administer", "administrator", "advanced", "advise", "advisor", "after", "against", "aggregate", "algorithm", "alias", "all", "all_rows", "allocate", "allow", "allow_datetime", "allow_ip", "also", "alter", "always", "analyse", "analyze", "ancillary", "and", "and_equal", "antijoin", "any", "append", "apply", "apr", "archive", "archivedir", "archivelog", "archivestyle", "are", "array", "array_agg", "array_max_cardinality", "arraylen", "as", "asc", "ascii", "asensitive", "asin", "assertion", "assign", "assignment", "associate", "asymmetric", "asynchronous", "at", "atach", "atan", "atomic", "attach", "attribute", "attributes", "audit", "aug", "authenticated", "authentication", "authid", "authorization", "auto", "auto_increment", "autoallocate", "autoextend", "autoextend_size", "automatic", "autonomous_transaction", "availability", "avg", "avg_row_length", "backed", "backup", "backupdir", "backupinfo", "backupset", "backward", "badfile", "bakfile", "base", "base64", "batch", "become", "before", "begin", "begin_frame", "begin_partition", "behalf", "bernoulli", "between", "bfile", "bigdatediff", "bigfile", "bigint", "binary", "binary_double", "binary_double_infinity", "binary_double_nan", "binary_float", "binary_float_infinity", "binary_float_nan", "binding", "binlog", "bit", "bit_length", "bitmap", "bits", "bitvar", "blob", "block", "block_range", "blocked", "blocks", "blocksize", "body", "bom", "bool", "boolean", "both", "bound", "branch", "breadth", "break", "broadcast", "browse", "bstring", "btree", "buffer", "buffer_cache", "buffer_pool", "build", "bulk", "by", "byday", "byhour", "byminute", "bymonth", "bymonthday", "bypass_recursive_check", "bypass_ujvc", "bysecond", "byte", "byweekno", "byyearday", "cache", "cache_cb", "cache_instances", "cache_temp_table", "calculate", "call", "called", "cancel", "cardinality", "cascade", "cascaded", "case", "cast", "catalog", "catalog_name", "catch", "category", "ceil", "ceiling", "certificate", "cfile", "chain", "chained", "chaining", "change", "changed", "channel", "char", "char_cs", "char_length", "character", "character_length", "character_set_catalog", "character_set_name", "character_set_schema", "characteristics", "characters", "charset", "check", "checked", "checkpoint", "checksum", "child", "choose", "chunk", "cipher", "civ_gb", "class", "class_origin", "classifies", "clear", "client", "clob", "clone", "close", "close_cached_open_cursors", "cluster", "clusterbtr", "clustered", "clustering_factor", "coalesce", "coarse", "cobol", "code", "collate", "collation", "collation_catalog", "collation_name", "collation_schema", "collect", "collections_get_refs", "column", "column_format", "column_name", "column_stats", "column_value", "columns", "command_function", "command_function_code", "comment", "comments", "commit", "committed", "commitwork", "compact", "compatibility", "compile", "complete", "completion", "composite_limit", "compress", "compressed", "compression", "compute", "concat", "concurrent", "concurrently", "condition", "condition_number", "conditional", "configuration", "conflict", "conforming", "connect", "connect_by_iscycle", "connect_by_isleaf", "connect_by_root", "connect_idle_time", "connect_time", "connection", "connection_name", "consider", "consistent", "const", "constant", "constraint", "constraint_catalog", "constraint_name", "constraint_schema", "constraints", "constructor", "container", "contains", "containstable", "content", "contents", "context", "continue", "control", "controlfile", "conversion", "convert", "copy", "corr", "corresponding", "corrupt", "corruption", "cos", "cosh", "cost", "count", "counter", "covar_pop", "covar_samp", "cpu", "cpu_costing", "cpu_per_call", "cpu_per_session", "create", "create_stored_outlines", "createdb", "createuser", "cross", "crypto", "csv", "ctlfile", "cube", "cube_gb", "cume_dist", "cumulative", "current", "current_catalog", "current_date", "current_default_transform_group", "current_path", "current_role", "current_row", "current_schema", "current_time", "current_timestamp", "current_transform_group_for_type", "current_user", "cursor", "cursor_name", "cursor_sharing_exact", "cursor_specific_segment", "cycle", "daily", "dangling", "data", "database", "databases", "datafile", "datafiles", "datalink", "dataobjno", "date", "date_mode", "dateadd", "datediff", "datepart", "datetime", "datetime_interval_code", "datetime_interval_precision", "day", "day_hour", "day_microsecond", "day_minute", "day_second", "db", "dba", "dba_recyclebin", "dbcc", "dbfile", "dbtimezone", "ddl", "ddl_clone", "deallocate", "debug", "dec", "decfloat", "decimal", "declare", "decode", "decrement", "default", "default_auth", "defaults", "deferrable", "deferred", "define", "defined", "definer", "degree", "delay", "delay_key_write", "delayed", "delete", "deleting", "delimited", "delimiter", "delimiters", "delta", "demand", "dense_rank", "deny", "depends", "depth", "deref", "deref_no_rewrite", "derived", "des_key_file", "desc", "describe", "descriptor", "destroy", "destructor", "detach", "detached", "determines", "deterministic", "device", "diagnostics", "dictionary", "dimension", "directory", "disable", "disassociate", "discard", "disconnect", "disk", "diskgroup", "disks", "diskspace", "dismount", "dispatch", "distinct", "distinctrow", "distinguished", "distributed", "div", "dlnewcopy", "dlpreviouscopy", "dlurlcomplete", "dlurlcompleteonly", "dlurlcompletewrite", "dlurlpath", "dlurlpathonly", "dlurlpathwrite", "dlurlscheme", "dlurlserver", "dlvalue", "dml", "dml_update", "do", "document", "domain", "domain_index_no_sort", "domain_index_sort", "double", "down", "downgrade", "driving_site", "drop", "dual", "dump", "dumpfile", "duplicate", "dynamic", "dynamic_function", "dynamic_function_code", "dynamic_sampling", "dynamic_sampling_est_cdn", "each", "editionable", "element", "else", "elseif", "elsif", "empty", "enable", "enclosed", "encoding", "encrypt", "encrypted", "encryption", "end", "end_frame", "end_partition", "end-exec", "ends", "enforce", "enforced", "engine", "engines", "entry", "enum", "equ", "equals", "errlvl", "error", "error_on_overlap_time", "errors", "escape", "escaped", "estimate", "event", "eventinfo", "events", "every", "except", "exception", "exception_init", "exceptions", "exchange", "exclude", "excluding", "exclusive", "exec", "execute", "exempt", "existing", "exists", "exit", "exp", "expand_gset_to_union", "expansion", "expire", "explain", "explosion", "export", "expr_corr_check", "expression", "extend", "extended", "extends", "extension", "extent", "extent_size", "extents", "extern", "external", "externally", "extract", "fact", "failed", "failed_login_attemps", "failed_login_attempts", "failgroup", "family", "fast", "faults", "fbtscan", "feb", "fetch", "fic_civ", "fic_piv", "fields", "file", "file_block_size", "filegroup", "filesize", "fillfactor", "filter", "final", "finally", "fine", "finish", "first", "first_rows", "first_value", "fixed", "flag", "flagger", "flashback", "float", "float4", "float8", "flob", "floor", "flush", "following", "follows", "for", "forall", "force", "force_xml_query_rewrite", "foreign", "foreign key", "format", "fortran", "forward", "found", "frame_row", "free", "freelist", "freelists", "freepools", "freetext", "freetexttable", "freeze", "freq", "frequence", "fresh", "fri", "from", "fs", "fulfill", "full", "full join", "fulltext", "fulltexttable", "fully", "function", "functions", "fusion", "gather_plan_statistics", "gby_conc_rollup", "general", "generated", "geometry", "geometrycollection", "get", "get_format", "gight", "global", "global_name", "global_topic_enabled", "globally", "go", "goto", "grant", "granted", "grants", "great", "greatest", "group", "group by", "group_by", "group_replication", "grouping", "groups", "guarantee", "guaranteed", "guard", "handler", "hash", "hash_aj", "hash_sj", "hashkeys", "hashpartmap", "having", "header", "heap", "help", "hex", "hextoraw", "hierarchy", "high", "high_priority", "hintset_begin", "hintset_end", "hold", "holdlock", "host", "hosts", "hour", "hour_microsecond", "hour_minute", "hour_second", "hourly", "huge", "hwm_brokered", "id", "identified", "identifier", "identity", "identity_insert", "identitycol", "idgenerators", "idle_time", "if", "ifnull", "ignore", "ignore_on_clause", "ignore_optim_embedded_hints", "ignore_row_on_dupkey_index", "ignore_server_ids", "ignore_where_clause", "ilike", "image", "immediate", "immediately", "immutable", "implementation", "implicit", "import", "in", "in_memory_metadata", "include", "include_version", "including", "increase", "increment", "incremental", "indent", "index", "index_asc", "index_combine", "index_desc", "index_ffs", "index_filter", "index_join", "index_rows", "index_rrs", "index_scan", "index_skip_scan", "index_ss", "index_ss_asc", "index_ss_desc", "index_stats", "indexed", "indexes", "indextype", "indextypes", "indicator", "indices", "infile", "infinite", "informational", "inherit", "inherits", "initial", "initial_size", "initialize", "initialized", "initially", "initrans", "inline", "inner", "inner join", "innerid", "inout", "input", "insensitive", "insert", "insert_method", "inserting", "install", "instance", "instances", "instantiable", "instantly", "instead", "int", "int1", "int2", "int3", "int4", "int8", "integer", "integrity", "intent", "intermediate", "internal_convert", "internal_use", "interpreted", "intersect", "intersection", "interval", "into", "invalidate", "invisible", "invoker", "io", "io_after_gtids", "io_before_gtids", "io_thread", "ipc", "is", "isnull", "isolation", "isolation_level", "issuer", "iterate", "iteration_number", "jan", "java", "job", "join", "json", "json_array", "json_arrayagg", "json_exists", "json_object", "json_objectagg", "json_query", "json_table", "json_table_primitive", "json_value", "jul", "jun", "keep", "kerberos", "key", "key_block_size", "key_length", "key_member", "key_type", "keyfile", "keys", "keysize", "kill", "label", "lag", "language", "large", "last", "last_value", "lateral", "lax", "layer", "ldap_reg_sync_interval", "ldap_registration", "ldap_registration_enabled", "lead", "leading", "leakproof", "least", "leave", "leaves", "left", "left join", "length", "less", "level", "levels", "lexer", "library", "like", "like_expand", "like_regex", "like2", "like4", "likec", "limit", "linear", "lineno", "lines", "linestring", "link", "list", "listagg", "listen", "ln", "lnnvl", "load", "lob", "local", "local_indexes", "local_object", "locally", "localtime", "localtimestamp", "location", "locator", "lock", "locked", "locks", "log", "log10", "logfile", "logged", "logging", "logical", "logical_reads_per_call", "logical_reads_per_session", "login", "logoff", "logon", "logout", "logs", "long", "longblob", "longtext", "longvarbinary", "longvarchar", "loop", "low_priority", "lower", "lsn", "main", "manage", "managed", "management", "manual", "map", "mapped", "mapping", "mar", "master", "master_auto_position", "master_bind", "master_connect_retry", "master_delay", "master_heartbeat_period", "master_host", "master_log_file", "master_log_pos", "master_password", "master_port", "master_retry_count", "master_server_id", "master_ssl", "master_ssl_ca", "master_ssl_capath", "master_ssl_cert", "master_ssl_cipher", "master_ssl_crl", "master_ssl_crlpath", "master_ssl_key", "master_ssl_verify_server_cert", "master_tls_version", "master_user", "match", "match_number", "match_recognize", "matched", "matches", "materialize", "materialized", "max", "max_connections_per_hour", "max_queries_per_hour", "max_rows", "max_run_duration", "max_size", "max_statement_time", "max_updates_per_hour", "max_user_connections", "maxarchlogs", "maxdatafiles", "maxextents", "maximize", "maxinstances", "maxlogfiles", "maxloghistory", "maxlogmembers", "maxpiecesize", "maxsize", "maxtrans", "maxvalue", "may", "measures", "medium", "mediumblob", "mediumint", "mediumtext", "mem_space", "member", "memory", "merge", "merge_aj", "merge_const_on", "merge_sj", "message_length", "message_octet_length", "message_text", "method", "micro", "microsecond", "middleint", "migrate", "min", "min_rows", "minextents", "minimize", "minimum", "minus", "minute", "minute_microsecond", "minute_second", "minutely", "minvalue", "mirror", "mlslabel", "mod", "mode", "model", "model_dontverify_uniqueness", "model_min_analysis", "model_no_analysis", "model_pby", "model_push_ref", "modifies", "modify", "module", "mon", "money", "monitoring", "month", "monthly", "more", "mount", "move", "movement", "multilinestring", "multipoint", "multipolygon", "multiset", "mumps", "mutex", "mv_merge", "mysql_errno", "name", "named", "names", "namespace", "nan", "national", "native", "natural", "nav", "nchar", "nchar_cs", "ncharacter", "nclob", "ndb", "ndbcluster", "needed", "nested", "nested_table_fast_insert", "nested_table_get_refs", "nested_table_id", "nested_table_set_refs", "nested_table_set_setid", "nesting", "network", "never", "new", "next", "nfc", "nfd", "nfkc", "nfkd", "nil", "nl_aj", "nl_sj", "nls_calendar", "nls_characterset", "nls_comp", "nls_currency", "nls_date_format", "nls_date_language", "nls_iso_currency", "nls_lang", "nls_language", "nls_length_semantics", "nls_nchar_conv_excp", "nls_numeric_characters", "nls_sort", "nls_special_chars", "nls_territory", "no", "no_access", "no_basetable_multimv_rewrite", "no_buffer", "no_cpu_costing", "no_expand", "no_expand_gset_to_union", "no_fact", "no_filtering", "no_index", "no_index_ffs", "no_index_ss", "no_merge", "no_model_push_ref", "no_monitoring", "no_multimv_rewrite", "no_order_rollups", "no_parallel", "no_parallel_index", "no_partial_commit", "no_prune_gsets", "no_push_pred", "no_push_subq", "no_qkn_buff", "no_query_transformation", "no_ref_cascade", "no_rewrite", "no_semijoin", "no_set_to_join", "no_star_transformation", "no_stats_gsets", "no_swap_join_inputs", "no_trigger", "no_unnest", "no_use_hash", "no_use_merge", "no_use_nl", "no_wait", "no_write_to_binlog", "no_xml_query_rewrite", "noappend", "noarchivelog", "noaudit", "nobranch", "nocache", "nocheck", "nocompress", "nocopy", "nocpu_costing", "nocycle", "node", "nodegroup", "nodelay", "noforce", "noguarantee", "nologging", "nomapping", "nomaxvalue", "nominimize", "nominvalue", "nomonitoring", "nonblocking", "nonclustered", "none", "noneditionable", "noorder", "nooverride", "noparallel", "noparallel_index", "norely", "norepair", "noresetlogs", "noreverse", "norewrite", "normal", "normalize", "normalized", "norowdependencies", "nosegment", "nosort", "nostrict", "noswitch", "not", "not_allow_datetime", "not_allow_ip", "nothing", "notify", "notnull", "nov", "novalidate", "nowait", "nth_value", "ntile", "null", "nullable", "nullif", "nulls", "number", "numeric", "nvarchar", "nvarchar2", "object", "objno", "objno_reuse", "occurrences_regex", "oct", "octet_length", "octets", "of", "off", "offline", "offset", "offsets", "oid", "oidindex", "oids", "old", "old_password", "omit", "on", "once", "one", "online", "only", "opaque", "opaque_transform", "opaque_xcanonical", "opcode", "open", "opendatasource", "openquery", "openrowset", "openxml", "operation", "operator", "opt_estimate", "optimal", "optimize", "optimizer_costs", "optimizer_features_enable", "optimizer_goal", "option", "optionally", "options", "or", "or_expand", "ora_rowscn", "order", "order by", "ordered", "ordered_predicates", "ordering", "ordinality", "organization", "others", "out", "out_of_line", "outer", "outfile", "outline", "output", "over", "overflow", "overflow_nomove", "overlaps", "overlay", "override", "overriding", "own", "owned", "owner", "pack_keys", "package", "packages", "pad", "page", "parallel", "parallel_enable", "parallel_index", "parameter", "parameter_mode", "parameter_name", "parameter_ordinal_position", "parameter_specific_catalog", "parameter_specific_name", "parameter_specific_schema", "parameters", "parent", "parity", "parms", "parse_gcol_expr", "parser", "partial", "partially", "partition", "partition_hash", "partition_list", "partition_range", "partitioning", "partitions", "pascal", "pass", "passing", "passthrough", "password", "password_grace_time", "password_life_time", "password_lock_time", "password_policy", "password_reuse_max", "password_reuse_time", "password_verify_function", "past", "path", "pattern", "pctfree", "pctincrease", "pctthreshold", "pctused", "pctversion", "pendant", "per", "percent", "percent_rank", "percentile_cont", "percentile_disc", "performance", "period", "permanent", "permission", "permute", "pfile", "phase", "physical", "pipe", "pipelined", "piv_gb", "piv_ssf", "pivot", "placing", "plan", "plans", "pli", "pls_integer", "plsql_code_type", "plsql_debug", "plsql_optimize_level", "plsql_warnings", "plugin", "plugin_dir", "plugins", "point", "policy", "polygon", "port", "portion", "position", "position_regex", "post_transaction", "postfix", "power", "pq_distribute", "pq_map", "pq_nomap", "pragma", "prebuilt", "precedes", "preceding", "precision", "prefix", "preorder", "prepare", "prepared", "present", "preserve", "pretty", "primary", "primary key", "print", "prior", "private", "private_sga", "privilege", "privileges", "proc", "procedural", "procedure", "procedures", "processlist", "profile", "profiles", "program", "project", "protected", "protection", "proxy", "prune", "ptf", "public", "publication", "purge", "push_pred", "push_subq", "px_granule", "qb_name", "quarter", "query", "query_block", "query_rewrite_integrity", "queue", "queue_curr", "queue_rowp", "quick", "quiesce", "quota", "quote", "quotes", "raid0", "raise", "raiserror", "random", "randomly", "range", "rank", "rapidly", "raw", "rawtohex", "rba", "read", "read_only", "read_per_call", "read_per_session", "read_write", "readonly", "reads", "readtext", "real", "reassign", "rebalance", "rebuild", "recheck", "reconfigure", "record", "records", "records_per_block", "recover", "recoverable", "recovery", "recursive", "recycle", "recyclebin", "redo_buffer_size", "redofile", "reduced", "redundancy", "redundant", "ref", "ref_cascade_cursor", "reference", "referenced", "references", "referencing", "refresh", "regexp", "regexp_like", "register", "regr_avgx", "regr_avgy", "regr_count", "regr_intercept", "regr_r2", "regr_slope", "regr_sxx", "regr_sxy", "regr_syy", "reindex", "reject", "rekey", "related", "relational", "relative", "relay", "relay_log_file", "relay_log_pos", "relay_thread", "relaylog", "release", "reload", "rely", "remote_mapped", "remove", "rename", "reorganize", "repair", "repeat", "repeatable", "replace", "replay", "replica", "replicate", "replicate_do_db", "replicate_do_table", "replicate_ignore_db", "replicate_ignore_table", "replicate_rewrite_db", "replicate_wild_do_table", "replicate_wild_ignore_table", "replication", "require", "required", "requiring", "reset", "resetlogs", "resignal", "resize", "resolve", "resolver", "resource", "respect", "restart", "restore", "restore_as_intervals", "restrict", "restrict_all_ref_cons", "restrict_references", "restricted", "result", "result_cache", "resumable", "resume", "retention", "return", "returned_cardinality", "returned_length", "returned_octet_length", "returned_sqlstate", "returning", "returns", "reuse", "reverse", "revert", "revoke", "rewrite", "rewrite_or_error", "right", "right join", "rlike", "role", "roles", "rollback", "rollfile", "rollup", "root", "rotate", "round", "routine", "routine_catalog", "routine_name", "routine_schema", "routines", "row", "row_count", "row_format", "row_length", "row_number", "rowcount", "rowdependencies", "rowguidcol", "rowid", "rownum", "rows", "rtree", "rule", "rules", "running", "salt", "sample", "sat", "save", "save_as_intervals", "savepoint", "sb4", "sbyte", "scalar", "scale", "scale_rows", "scan", "scan_instances", "schedule", "scheduler", "schema", "schema_name", "schemas", "scn", "scn_ascending", "scope", "scope_catalog", "scope_name", "scope_schema", "scroll", "sd_all", "sd_inhibit", "sd_show", "sealed", "search", "second", "second_microsecond", "secondly", "section", "security", "securityaudit", "seed", "seg_block", "seg_file", "segment", "select", "selective", "selectivity", "self", "semijoin", "semijoin_driver", "sensitive", "sep", "separator", "sequence", "sequenced", "sequences", "sequential", "sererr", "serial", "serializable", "server", "server_name", "servererror", "session", "session_cached_cursors", "session_per_user", "session_user", "sessions_per_user", "sessiontimezone", "sessiontzname", "set", "set_to_join", "setof", "sets", "settings", "setuser", "severe", "share", "shared", "shared_pool", "short", "show", "shrink", "shutdown", "siblings", "sid", "signal", "signed", "similar", "simple", "sin", "since", "single", "singletask", "sinh", "size", "sizeof", "skip", "skip_ext_optimizer", "skip_unq_unusable_idx", "skip_unusable_indexes", "slave", "slow", "smallfile", "smallint", "snapshot", "socket", "some", "soname", "sort", "sound", "sounds", "source", "space", "span", "spatial", "specific", "specific_name", "specification", "specifictype", "speed", "spfile", "split", "spreadsheet", "sql", "sql_after_gtids", "sql_after_mts_gaps", "sql_before_gtids", "sql_big_result", "sql_buffer_result", "sql_cache", "sql_calc_found_rows", "sql_no_cache", "sql_small_result", "sql_thread", "sql_trace", "sql_tsi_day", "sql_tsi_hour", "sql_tsi_minute", "sql_tsi_month", "sql_tsi_quarter", "sql_tsi_second", "sql_tsi_week", "sql_tsi_year", "sqlca", "sqlcode", "sqlerror", "sqlexception", "sqlldr", "sqlstate", "sqlwarning", "sqrt", "ssl", "stable", "stacked", "standalone", "standby", "star", "star_transformation", "start", "starting", "starts", "startup", "stat", "state", "statement", "statement_id", "static", "statistics", "stats_auto_recalc", "stats_persistent", "stats_sample_pages", "status", "stddev", "stddev_pop", "stddev_samp", "stdin", "stdout", "stop", "storage", "store", "stored", "straight_join", "streams", "strict", "string", "strip", "struct", "structure", "style", "subclass_origin", "subject", "submultiset", "subpartition", "subpartition_rel", "subpartitions", "subscription", "subset", "substitutable", "substring", "substring_regex", "subtype", "succeeds", "successful", "sum", "summary", "sun", "super", "supplemental", "support", "suspend", "swap_join_inputs", "swaps", "switch", "switches", "switchover", "symmetric", "sync", "synchronous", "synonym", "sys_connect_by_path", "sys_dl_cursor", "sys_fbt_insdel", "sys_op_bitvec", "sys_op_cast", "sys_op_col_present", "sys_op_enforce_not_null$", "sys_op_mine_value", "sys_op_noexpand", "sys_op_ntcimg$", "sys_parallel_txn", "sys_rid_order", "sysaux", "sysdate", "sysdba", "sysid", "sysoper", "system", "system_time", "system_user", "systimestamp", "table", "table_checksum", "table_name", "table_stats", "tables", "tablesample", "tablespace", "tablespace_no", "tabno", "tan", "tanh", "task", "temp", "tempfile", "template", "temporary", "temptable", "terminate", "terminated", "test", "text", "textsize", "than", "the", "then", "thread", "through", "throw", "thu", "ties", "time", "time_zone", "timeout", "timer", "times", "timestamp", "timestampadd", "timestampdiff", "timezone_abbr", "timezone_hour", "timezone_minute", "timezone_region", "tinyblob", "tinyint", "tinytext", "tiv_gb", "tiv_ssf", "to", "token", "top", "top_level_count", "toplevel", "trace", "tracing", "tracking", "trailing", "tran", "transaction", "transaction_active", "transactional", "transactions_committed", "transactions_rolled_back", "transform", "transforms", "transitional", "translate", "translate_regex", "translation", "treat", "trigger", "trigger_catalog", "trigger_name", "trigger_schema", "triggers", "trim", "trim_array", "truncate", "truncsize", "trusted", "trxid", "try", "tsequal", "tue", "tuning", "tx", "type", "typedef", "typeof", "types", "tz_offset", "ub2", "uba", "uescape", "uid", "uint", "ulong", "unarchived", "unbound", "unbounded", "uncommitted", "unconditional", "undefined", "under", "undo", "undo_buffer_size", "undofile", "undrop", "unencrypted", "unicode", "uniform", "uninstall", "union", "unique", "unknown", "unlimited", "unlink", "unlisten", "unlock", "unlogged", "unmatched", "unnamed", "unnest", "unpacked", "unpivot", "unprotected", "unquiesce", "unrecoverable", "unsigned", "until", "untyped", "unusable", "unused", "up", "upd_indexes", "upd_joinindex", "updatable", "update", "updated", "updatetext", "updating", "upgrade", "upper", "upsert", "uri", "urowid", "usage", "use", "use_anti", "use_concat", "use_frm", "use_hash", "use_merge", "use_nl", "use_nl_with_index", "use_private_outlines", "use_semi", "use_stored_outlines", "use_ttt_for_gsets", "use_weak_name_resl", "user", "user_defined", "user_defined_type_catalog", "user_defined_type_code", "user_defined_type_name", "user_defined_type_schema", "user_recyclebin", "user_resources", "ushort", "using", "utc_date", "utc_time", "utc_timestamp", "utf16", "utf32", "utf8", "vacuum", "valid", "validate", "validation", "validator", "value", "value_of", "values", "var_pop", "var_samp", "varbinary", "varchar", "varchar2", "varcharacter", "variable", "variables", "variadic", "variance", "varray", "varying", "vector_read", "vector_read_trace", "verbose", "verify", "version", "versioning", "versions", "versions_endtime", "versions_endtrxid", "versions_operation", "versions_starttime", "versions_starttrxid", "vertical", "view", "views", "virtual", "visible", "void", "volatile", "vsize", "wait", "waitfor", "warnings", "wed", "week", "weekly", "weight_string", "wellformed", "when", "whenever", "where", "while", "whitespace", "width_bucket", "window", "with", "within", "without", "work", "wrapped", "wrapper", "write", "writetext", "x_dyn_prune", "x509", "xa", "xid", "xml", "xmlagg", "xmlattributes", "xmlbinary", "xmlcast", "xmlcolattval", "xmlcomment", "xmlconcat", "xmldeclaration", "xmldocument", "xmlelement", "xmlexists", "xmlforest", "xmliterate", "xmlnamespaces", "xmlparse", "xmlpi", "xmlquery", "xmlroot", "xmlschema", "xmlserialize", "xmltable", "xmltext", "xmltype", "xmlvalidate", "xor", "year", "year_month", "yearly", "yes", "zerofill", "zone", "false", "true");

    /**
     * 系统，语言，数据关键字
     */
    public static final List<String> getAllKeyWord() {
        List<String> allKeyWord = new ArrayList<>();
        allKeyWord.addAll(SYS_KEYWORD);
        allKeyWord.addAll(JAVA_KEYWORD);
        allKeyWord.addAll(SQL_KEYWORD);
        return allKeyWord;
    }

    /**
     * 系统，语言，数据关键字是否包含
     */
    public static final boolean containKeyword(String keyword) {
        if(StringUtil.isEmpty(keyword)){
            return false;
        }
        List<String> allKeyWord = getAllKeyWord();
        return allKeyWord.contains(keyword.toLowerCase());
    }
}
